A streaming media service generally includes a content server, a content player, and a communications network connecting the content server to the content player. The content server is configured to store (or provide access to) media files (or “streams”) made available to end users. Each stream may provide a digital version of a feature length film, a television programs, a sporting event, a staged or live event captured by recorded video, etc. Streams also include media content created specifically for distribution online. Content files stored on the content server are typically organized according to playback chronology and store audio data and/or video data.
Media playback by a client device is typically referred as “streaming” because the content server transmits portions of a media file to the client device, which in turn decodes and initiates playback without waiting for the complete stream to be received. To account for variable latency and bandwidth within the communications network, a content buffer on the client device queues incoming portions of the stream ahead of portions actually being played. During moments of network congestion (which leads to lower available bandwidth) less data is added to the buffer, which may drain down as data is being de-queued to support playback at a certain playback bit rate. However, during moments of high network bandwidth, the buffer is replenished and additional buffer time is added until the buffer is generally full again. In practical systems, the buffer may queue data corresponding to a time span ranging from seconds to more than a minute.
Streaming encoded audiovisual (AV) programs over the Internet has become popular as the availability of high-bandwidth Internet communication has increased. From a technical standpoint, a variety of different streaming media protocols are available for transmitting media streams to the client. Although many of these protocols were designed to transmit media streams from a server to a conventional computing system, e.g., a typical desktop PC or laptop computer, or home theatre PC (HTPC), the streaming approach is also being used to transmit streaming media to a variety of end-user client devices; including, e.g., mobile telephones, tablet and net-book computing devices, console and handheld video game systems, digital video recorders (DVRs), DVD players, connected digital TVs, and dedicated media streaming devices, (e.g., the Roku® set-top box), etc.
A user interface on the client device allows users to select a title and begin streaming it. For example, an interface may present a list of titles available for streaming or a user might search for a desired title. Titles can also be presented by category or according to other criteria. The interface might also provide an image of a DVD box cover (referred to as a “box shot”) or a promotional poster related to a feature film or a still taken from the video stream. The interface might also provide program guide data, such as a short summary of a plot, a list of actors, directors, etc., along with information related to the particular viewer, such as friends who have watched a particular title or reasons why a viewer might want to watch particular titles (e.g., a recommendation for one title based on viewing another title).